library(ggplot2)
library(gridExtra)
library(dplyr)
library(RColorBrewer)
midA = read.csv(file="./data/MID/MIDA_4.01.csv", sep= ",")
midB = read.csv(file="./data/MID/MIDB_4.01.csv", sep= ",")
midI = read.csv(file="./data/MID/MIDI_4.01.csv", sep= ",")
midIP = read.csv(file="./data/MID/MIDIP_4.01.csv", sep= ",")
## Combine A&B 
midAB = merge(x = midB, y = midA, by = "DispNum3", all.x = TRUE)
midAB <- midAB[,c(1,3,  4,  7,  10, 11, 15, 16, 17, 18, 19, 21, 28, 29, 32, 33, 36, 37, 38, 39, 40, 41, 42)]
midAB <- midAB[midAB$EndYear.x >= 1900,]
midA <- midA[midA$EndYear>= 1900,]
midB <- midB[midB$EndYear>= 1900,]
midAB$Outcome <- as.factor(midAB$Outcome)
midAB$HiAct.x <- as.factor(midAB$HiAct.x)
d=data.frame(x1=c(1914,1939, 1947, 1950, 1955, 2001), x2=c(1918, 1945, 1991, 1953, 1975, 2010), y1=c(0,0,0,0,0,0), Conflict=c("WWI", "WWII", "Cold War", "Korean War", "Vietnam War", "Afghanistan War"), r=c(1,2,3,4,5,6))
ggplot() + 
geom_rect(data=d, mapping=aes(xmin = x1, xmax=x2, ymin=0, ymax=250, fill = Conflict ),alpha=0.5) +
geom_histogram(data = midA, aes(midA$StYear), alpha = .4) 

Facet by Outcome

ggplot() + 
geom_rect(data=d, mapping=aes(xmin = x1, xmax=x2, ymin=0, ymax=175, fill = Conflict ),alpha=0.5) +
geom_histogram(data = midA, aes(midA$StYear), alpha = .4) + facet_wrap(~Outcome)

Facet by Highest Action in Dispute

ggplot() + 
geom_rect(data=d, mapping=aes(xmin = x1, xmax=x2, ymin=0, ymax=150, fill = Conflict ),alpha=0.5) +
geom_histogram(data = midA, aes(midA$StYear), alpha = .4) + facet_wrap(~HiAct)

Facet by Hostility Level of Dispute

ggplot() + 
geom_rect(data=d, mapping=aes(xmin = x1, xmax=x2, ymin=0, ymax=200, fill = Conflict ),alpha=0.5) +
geom_histogram(data = midA, aes(midA$StYear), alpha = .4) + facet_wrap(~HostLev)

Facet by Settlement of Dispute

ggplot() + 
geom_rect(data=d, mapping=aes(xmin = x1, xmax=x2, ymin=0, ymax=200, fill = Conflict ),alpha=0.5) +
geom_histogram(data = midA, aes(midA$StYear), alpha = .4) + facet_wrap(~Settle)

US Disputes

us <- filter(midB, ccode%in%2)
us = merge(x = us, y = midA, by = "DispNum3", all.x = TRUE)
ggplot() + 
geom_rect(data=d, mapping=aes(xmin = x1, xmax=x2, ymin=0, ymax=30, fill = Conflict ),alpha=0.3) +
geom_histogram(data = us , aes(us$StYear.x), alpha = .4) + facet_wrap(~Outcome)

ggplot() + 
geom_rect(data=d, mapping=aes(xmin = x1, xmax=x2, ymin=0, ymax=30, fill = Conflict ),alpha=0.3) +
geom_histogram(data = us , aes(us$StYear.x), alpha = .4) + facet_wrap(~Orig)

ggplot() + 
geom_rect(data=d, mapping=aes(xmin = x1, xmax=x2, ymin=0, ymax=30, fill = Conflict ),alpha=0.3) +
geom_histogram(data = us , aes(us$StYear.x), alpha = .4) + facet_wrap(~HostLev.x)

World War I

WWI ————————– 1914-1918
WWII ————————- 1939-1945
Cold War ——————– 1947-1991
Korean War —————- 1950-1953
Vietnam War ————— 1955-1975
War in Afghanistan ——- 2001-2010

d=data.frame(x1=c(1914,1939, 1947, 1950, 1955, 2001), x2=c(1918, 1945, 1991, 1953, 1975, 2010), y1=c(0,0,0,0,0,0), Conflict=c("WWI", "WWII", "Cold War", "Korean War", "Vietnam War", "Afghanistan War"), r=c(1,2,3,4,5,6))
WWI <- midAB
WWI <- midAB[midAB$StYear.x >= 1909,]
WWI <- midAB[midAB$StYear.x <= 1925,]
a <- ggplot() + 
geom_rect(data=d, mapping=aes(xmin=1914, xmax=1918, ymin="AAB", ymax="ZIM"),alpha=0.15, fill = "salmon" ) +
geom_point(data = WWI, aes(x = StYear.x, y = StAbb, color = Outcome)) + facet_wrap(~SideA)
b <- ggplot() + 
geom_rect(data=d, mapping=aes(xmin=1914, xmax=1918, ymin="AAB", ymax="ZIM"),alpha=0.15, fill = "salmon" ) +
geom_point(data = WWI, aes(x = StYear.x, y = StAbb, color = Outcome)) + facet_wrap(~Orig)
grid.arrange(a,b, nrow =2)

World War II

WWII <- midAB
WWII <- WWII[WWII$StYear.x >= 1930,]
WWII <- WWII[WWII$StYear.x <= 1950,]
a <- ggplot() + 
geom_rect(data=d, mapping=aes(xmin=1939, xmax=1945, ymin="AAB", ymax="ZIM"),alpha=0.15, fill = "salmon" ) +
geom_point(data = WWII, aes(x = StYear.x, y = StAbb, color = Outcome)) + facet_wrap(~SideA)
b <- ggplot() + 
geom_rect(data=d, mapping=aes(xmin=1939, xmax=1945, ymin="AAB", ymax="ZIM"),alpha=0.15, fill = "salmon" ) +
geom_point(data = WWII, aes(x = StYear.x, y = StAbb, color = Outcome)) + facet_wrap(~Orig)
grid.arrange(a,b, nrow =2)

ggplot() + 
geom_rect(data=d, mapping=aes(xmin=1939, xmax=1945, ymin=0, ymax=150),alpha=0.15, fill = "gray" ) +
geom_histogram(data = WWII, aes(WWII$StYear.x)) 

Cold War

coldwar <- midAB
coldwar <- coldwar[midAB$StYear.x >= 1940,]
coldwar <- coldwar[midAB$StYear.x <= 1999,]
a <- ggplot() + 
geom_rect(data=d, mapping=aes(xmin=1947, xmax=1991, ymin="AAB", ymax="ZIM"),alpha=0.15, fill = "salmon" ) +
geom_point(data = coldwar, aes(x = StYear.x, y = StAbb, color = Outcome)) + facet_wrap(~SideA)
b <- ggplot() + 
geom_rect(data=d, mapping=aes(xmin=1947, xmax=1991, ymin="AAB", ymax="ZIM"),alpha=0.15, fill = "salmon" ) +
geom_point(data = coldwar, aes(x = StYear.x, y = StAbb, color = Outcome)) + facet_wrap(~Orig)
grid.arrange(a,b, nrow =2)

ggplot() + 
geom_rect(data=d, mapping=aes(xmin=1939, xmax=1945, ymin=0, ymax=150),alpha=0.15, fill = "gray" ) +
geom_histogram(data = WWII, aes(WWII$StYear.x)) 

Korean War

kwar <- midAB
kwar <- midAB[midAB$StYear.x >= 1947,]
kwar <- midAB[midAB$StYear.x <= 1955,]
vwar <- midAB
vwar <- midAB[midAB$StYear.x >= 1950,]
vwar <- midAB[midAB$StYear.x <= 1980,]
awar <- midAB
awar <- midAB[midAB$StYear.x >= 1996,]
a <- ggplot() + 
geom_rect(data=d, mapping=aes(xmin=1950, xmax=1953, ymin="AAB", ymax="ZIM"),alpha=0.15, fill = "salmon" ) +
geom_point(data = kwar, aes(x = StYear.x, y = StAbb, color = Outcome)) + facet_wrap(~SideA)
b <- ggplot() + 
geom_rect(data=d, mapping=aes(xmin=1950, xmax=1953, ymin="AAB", ymax="ZIM"),alpha=0.15, fill = "salmon" ) +
geom_point(data = kwar, aes(x = StYear.x, y = StAbb, color = Outcome)) + facet_wrap(~Orig)
grid.arrange(a,b, nrow =2)

Vietnam War

vwar <- midAB
vwar <- midAB[midAB$StYear.x >= 1950,]
vwar <- midAB[midAB$StYear.x <= 1980,]
a <- ggplot() + 
geom_rect(data=d, mapping=aes(xmin=1955, xmax=1975, ymin="AAB", ymax="ZIM"),alpha=0.15, fill = "salmon" ) +
geom_point(data = vwar, aes(x = StYear.x, y = StAbb, color = Outcome)) + facet_wrap(~SideA)
b <- ggplot() + 
geom_rect(data=d, mapping=aes(xmin=1955, xmax=1975, ymin="AAB", ymax="ZIM"),alpha=0.15, fill = "salmon" ) +
geom_point(data = vwar, aes(x = StYear.x, y = StAbb, color = Outcome)) + facet_wrap(~Orig)
grid.arrange(a,b, nrow =2)

Afghanistan War

awar <- midAB
awar <- midAB[midAB$StYear.x >= 1996,]
a <- ggplot() + 
geom_rect(data=d, mapping=aes(xmin=2001, xmax=2010, ymin="AAB", ymax="ZIM"),alpha=0.15, fill = "salmon" ) +
geom_point(data = awar, aes(x = StYear.x, y = StAbb, color = Outcome)) + facet_wrap(~SideA)
b <- ggplot() + 
geom_rect(data=d, mapping=aes(xmin=2001, xmax=2010, ymin="AAB", ymax="ZIM"),alpha=0.15, fill = "salmon" ) +
geom_point(data = awar, aes(x = StYear.x, y = StAbb, color = Outcome)) + facet_wrap(~Orig)
grid.arrange(a,b, nrow =2)

LS0tCnRpdGxlOiAiTUlEIgpvdXRwdXQ6IGh0bWxfbm90ZWJvb2sKLS0tCgpgYGB7ciBmaWcud2lkdGg9MTAsIGZpZy5oZWlnaHQ9Nn0KbGlicmFyeShnZ3Bsb3QyKQpsaWJyYXJ5KGdyaWRFeHRyYSkKbGlicmFyeShkcGx5cikKbGlicmFyeShSQ29sb3JCcmV3ZXIpCgptaWRBID0gcmVhZC5jc3YoZmlsZT0iLi9kYXRhL01JRC9NSURBXzQuMDEuY3N2Iiwgc2VwPSAiLCIpCm1pZEIgPSByZWFkLmNzdihmaWxlPSIuL2RhdGEvTUlEL01JREJfNC4wMS5jc3YiLCBzZXA9ICIsIikKbWlkSSA9IHJlYWQuY3N2KGZpbGU9Ii4vZGF0YS9NSUQvTUlESV80LjAxLmNzdiIsIHNlcD0gIiwiKQptaWRJUCA9IHJlYWQuY3N2KGZpbGU9Ii4vZGF0YS9NSUQvTUlESVBfNC4wMS5jc3YiLCBzZXA9ICIsIikKCiMjIENvbWJpbmUgQSZCIAoKbWlkQUIgPSBtZXJnZSh4ID0gbWlkQiwgeSA9IG1pZEEsIGJ5ID0gIkRpc3BOdW0zIiwgYWxsLnggPSBUUlVFKQoKbWlkQUIgPC0gbWlkQUJbLGMoMSwzLAk0LAk3LAkxMCwJMTEsCTE1LAkxNiwJMTcsCTE4LAkxOSwJMjEsCTI4LAkyOSwJMzIsCTMzLAkzNiwJMzcsCTM4LAkzOSwJNDAsCTQxLAk0MildCm1pZEFCIDwtIG1pZEFCW21pZEFCJEVuZFllYXIueCA+PSAxOTAwLF0KbWlkQSA8LSBtaWRBW21pZEEkRW5kWWVhcj49IDE5MDAsXQptaWRCIDwtIG1pZEJbbWlkQiRFbmRZZWFyPj0gMTkwMCxdCgptaWRBQiRPdXRjb21lIDwtIGFzLmZhY3RvcihtaWRBQiRPdXRjb21lKQptaWRBQiRIaUFjdC54IDwtIGFzLmZhY3RvcihtaWRBQiRIaUFjdC54KQoKZD1kYXRhLmZyYW1lKHgxPWMoMTkxNCwxOTM5LCAxOTQ3LCAxOTUwLCAxOTU1LCAyMDAxKSwgeDI9YygxOTE4LCAxOTQ1LCAxOTkxLCAxOTUzLCAxOTc1LCAyMDEwKSwgeTE9YygwLDAsMCwwLDAsMCksIENvbmZsaWN0PWMoIldXSSIsICJXV0lJIiwgIkNvbGQgV2FyIiwgIktvcmVhbiBXYXIiLCAiVmlldG5hbSBXYXIiLCAiQWZnaGFuaXN0YW4gV2FyIiksIHI9YygxLDIsMyw0LDUsNikpCgpnZ3Bsb3QoKSArIApnZW9tX3JlY3QoZGF0YT1kLCBtYXBwaW5nPWFlcyh4bWluID0geDEsIHhtYXg9eDIsIHltaW49MCwgeW1heD0yNTAsIGZpbGwgPSBDb25mbGljdCApLGFscGhhPTAuNSkgKwpnZW9tX2hpc3RvZ3JhbShkYXRhID0gbWlkQSwgYWVzKG1pZEEkU3RZZWFyKSwgYWxwaGEgPSAuNCkgCgoKCmBgYAoKIyMgRmFjZXQgYnkgT3V0Y29tZQpgYGB7ciBmaWcud2lkdGg9MTUsIGZpZy5oZWlnaHQ9MTB9CmdncGxvdCgpICsgCmdlb21fcmVjdChkYXRhPWQsIG1hcHBpbmc9YWVzKHhtaW4gPSB4MSwgeG1heD14MiwgeW1pbj0wLCB5bWF4PTE3NSwgZmlsbCA9IENvbmZsaWN0ICksYWxwaGE9MC41KSArCmdlb21faGlzdG9ncmFtKGRhdGEgPSBtaWRBLCBhZXMobWlkQSRTdFllYXIpLCBhbHBoYSA9IC40KSArIGZhY2V0X3dyYXAofk91dGNvbWUpCgpgYGAKCgojIyBGYWNldCBieSBIaWdoZXN0IEFjdGlvbiBpbiBEaXNwdXRlIAoKYGBge3IgZmlnLndpZHRoPTE1LCBmaWcuaGVpZ2h0PTEwfQpnZ3Bsb3QoKSArIApnZW9tX3JlY3QoZGF0YT1kLCBtYXBwaW5nPWFlcyh4bWluID0geDEsIHhtYXg9eDIsIHltaW49MCwgeW1heD0xNTAsIGZpbGwgPSBDb25mbGljdCApLGFscGhhPTAuNSkgKwpnZW9tX2hpc3RvZ3JhbShkYXRhID0gbWlkQSwgYWVzKG1pZEEkU3RZZWFyKSwgYWxwaGEgPSAuNCkgKyBmYWNldF93cmFwKH5IaUFjdCkKCmBgYAoKCiMjIEZhY2V0IGJ5IEhvc3RpbGl0eSBMZXZlbCBvZiBEaXNwdXRlIApgYGB7ciBmaWcud2lkdGg9MTUsIGZpZy5oZWlnaHQ9MTB9CmdncGxvdCgpICsgCmdlb21fcmVjdChkYXRhPWQsIG1hcHBpbmc9YWVzKHhtaW4gPSB4MSwgeG1heD14MiwgeW1pbj0wLCB5bWF4PTIwMCwgZmlsbCA9IENvbmZsaWN0ICksYWxwaGE9MC41KSArCmdlb21faGlzdG9ncmFtKGRhdGEgPSBtaWRBLCBhZXMobWlkQSRTdFllYXIpLCBhbHBoYSA9IC40KSArIGZhY2V0X3dyYXAofkhvc3RMZXYpCgpgYGAKCgojIyBGYWNldCBieSBTZXR0bGVtZW50IG9mIERpc3B1dGUgCmBgYHtyIGZpZy53aWR0aD0xNSwgZmlnLmhlaWdodD0xMH0KZ2dwbG90KCkgKyAKZ2VvbV9yZWN0KGRhdGE9ZCwgbWFwcGluZz1hZXMoeG1pbiA9IHgxLCB4bWF4PXgyLCB5bWluPTAsIHltYXg9MjAwLCBmaWxsID0gQ29uZmxpY3QgKSxhbHBoYT0wLjUpICsKZ2VvbV9oaXN0b2dyYW0oZGF0YSA9IG1pZEEsIGFlcyhtaWRBJFN0WWVhciksIGFscGhhID0gLjQpICsgZmFjZXRfd3JhcCh+U2V0dGxlKQoKYGBgCgoKCiMgVVMgRGlzcHV0ZXMgCgpgYGB7ciBmaWcud2lkdGg9MTUsIGZpZy5oZWlnaHQ9MTB9CnVzIDwtIGZpbHRlcihtaWRCLCBjY29kZSVpbiUyKQoKdXMgPSBtZXJnZSh4ID0gdXMsIHkgPSBtaWRBLCBieSA9ICJEaXNwTnVtMyIsIGFsbC54ID0gVFJVRSkKCmdncGxvdCgpICsgCmdlb21fcmVjdChkYXRhPWQsIG1hcHBpbmc9YWVzKHhtaW4gPSB4MSwgeG1heD14MiwgeW1pbj0wLCB5bWF4PTMwLCBmaWxsID0gQ29uZmxpY3QgKSxhbHBoYT0wLjMpICsKZ2VvbV9oaXN0b2dyYW0oZGF0YSA9IHVzICwgYWVzKHVzJFN0WWVhci54KSwgYWxwaGEgPSAuNCkgKyBmYWNldF93cmFwKH5PdXRjb21lKQoKYGBgCgoKYGBge3IgZmlnLndpZHRoPTE1LCBmaWcuaGVpZ2h0PTEwfQpnZ3Bsb3QoKSArIApnZW9tX3JlY3QoZGF0YT1kLCBtYXBwaW5nPWFlcyh4bWluID0geDEsIHhtYXg9eDIsIHltaW49MCwgeW1heD0zMCwgZmlsbCA9IENvbmZsaWN0ICksYWxwaGE9MC4zKSArCmdlb21faGlzdG9ncmFtKGRhdGEgPSB1cyAsIGFlcyh1cyRTdFllYXIueCksIGFscGhhID0gLjQpICsgZmFjZXRfd3JhcCh+T3JpZykKCmBgYAoKCmBgYHtyIGZpZy53aWR0aD0xNSwgZmlnLmhlaWdodD0xMH0KZ2dwbG90KCkgKyAKZ2VvbV9yZWN0KGRhdGE9ZCwgbWFwcGluZz1hZXMoeG1pbiA9IHgxLCB4bWF4PXgyLCB5bWluPTAsIHltYXg9MzAsIGZpbGwgPSBDb25mbGljdCApLGFscGhhPTAuMykgKwpnZW9tX2hpc3RvZ3JhbShkYXRhID0gdXMgLCBhZXModXMkU3RZZWFyLngpLCBhbHBoYSA9IC40KSArIGZhY2V0X3dyYXAofkhvc3RMZXYueCkKCmBgYAoKCgoKCgoKCgojIyBXb3JsZCBXYXIgSSAKCldXSSAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAxOTE0LTE5MTggIApXV0lJICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIDE5MzktMTk0NSAgCkNvbGQgV2FyIC0tLS0tLS0tLS0tLS0tLS0tLS0tIDE5NDctMTk5MSAgCktvcmVhbiBXYXIgLS0tLS0tLS0tLS0tLS0tLSAxOTUwLTE5NTMgIApWaWV0bmFtIFdhciAtLS0tLS0tLS0tLS0tLS0gMTk1NS0xOTc1ICAKV2FyIGluIEFmZ2hhbmlzdGFuIC0tLS0tLS0gMjAwMS0yMDEwIAoKCgpgYGB7ciBmaWcud2lkdGg9MTAsIGZpZy5oZWlnaHQ9MTR9CgpkPWRhdGEuZnJhbWUoeDE9YygxOTE0LDE5MzksIDE5NDcsIDE5NTAsIDE5NTUsIDIwMDEpLCB4Mj1jKDE5MTgsIDE5NDUsIDE5OTEsIDE5NTMsIDE5NzUsIDIwMTApLCB5MT1jKDAsMCwwLDAsMCwwKSwgQ29uZmxpY3Q9YygiV1dJIiwgIldXSUkiLCAiQ29sZCBXYXIiLCAiS29yZWFuIFdhciIsICJWaWV0bmFtIFdhciIsICJBZmdoYW5pc3RhbiBXYXIiKSwgcj1jKDEsMiwzLDQsNSw2KSkKCldXSSA8LSBtaWRBQgpXV0kgPC0gbWlkQUJbbWlkQUIkU3RZZWFyLnggPj0gMTkwOSxdCldXSSA8LSBtaWRBQlttaWRBQiRTdFllYXIueCA8PSAxOTI1LF0KCgphIDwtIGdncGxvdCgpICsgCmdlb21fcmVjdChkYXRhPWQsIG1hcHBpbmc9YWVzKHhtaW49MTkxNCwgeG1heD0xOTE4LCB5bWluPSJBQUIiLCB5bWF4PSJaSU0iKSxhbHBoYT0wLjE1LCBmaWxsID0gInNhbG1vbiIgKSArCmdlb21fcG9pbnQoZGF0YSA9IFdXSSwgYWVzKHggPSBTdFllYXIueCwgeSA9IFN0QWJiLCBjb2xvciA9IE91dGNvbWUpKSArIGZhY2V0X3dyYXAoflNpZGVBKQoKYiA8LSBnZ3Bsb3QoKSArIApnZW9tX3JlY3QoZGF0YT1kLCBtYXBwaW5nPWFlcyh4bWluPTE5MTQsIHhtYXg9MTkxOCwgeW1pbj0iQUFCIiwgeW1heD0iWklNIiksYWxwaGE9MC4xNSwgZmlsbCA9ICJzYWxtb24iICkgKwpnZW9tX3BvaW50KGRhdGEgPSBXV0ksIGFlcyh4ID0gU3RZZWFyLngsIHkgPSBTdEFiYiwgY29sb3IgPSBPdXRjb21lKSkgKyBmYWNldF93cmFwKH5PcmlnKQoKZ3JpZC5hcnJhbmdlKGEsYiwgbnJvdyA9MikKCmBgYAoKIyMgV29ybGQgV2FyIElJCmBgYHtyIGZpZy53aWR0aD0xMCwgZmlnLmhlaWdodD0xNH0KV1dJSSA8LSBtaWRBQgpXV0lJIDwtIFdXSUlbV1dJSSRTdFllYXIueCA+PSAxOTMwLF0KV1dJSSA8LSBXV0lJW1dXSUkkU3RZZWFyLnggPD0gMTk1MCxdCgoKYSA8LSBnZ3Bsb3QoKSArIApnZW9tX3JlY3QoZGF0YT1kLCBtYXBwaW5nPWFlcyh4bWluPTE5MzksIHhtYXg9MTk0NSwgeW1pbj0iQUFCIiwgeW1heD0iWklNIiksYWxwaGE9MC4xNSwgZmlsbCA9ICJzYWxtb24iICkgKwpnZW9tX3BvaW50KGRhdGEgPSBXV0lJLCBhZXMoeCA9IFN0WWVhci54LCB5ID0gU3RBYmIsIGNvbG9yID0gT3V0Y29tZSkpICsgZmFjZXRfd3JhcCh+U2lkZUEpCgpiIDwtIGdncGxvdCgpICsgCmdlb21fcmVjdChkYXRhPWQsIG1hcHBpbmc9YWVzKHhtaW49MTkzOSwgeG1heD0xOTQ1LCB5bWluPSJBQUIiLCB5bWF4PSJaSU0iKSxhbHBoYT0wLjE1LCBmaWxsID0gInNhbG1vbiIgKSArCmdlb21fcG9pbnQoZGF0YSA9IFdXSUksIGFlcyh4ID0gU3RZZWFyLngsIHkgPSBTdEFiYiwgY29sb3IgPSBPdXRjb21lKSkgKyBmYWNldF93cmFwKH5PcmlnKQoKZ3JpZC5hcnJhbmdlKGEsYiwgbnJvdyA9MikKYGBgCgpgYGB7ciBmaWcud2lkdGg9MTAsIGZpZy5oZWlnaHQ9MTR9CmdncGxvdCgpICsgCmdlb21fcmVjdChkYXRhPWQsIG1hcHBpbmc9YWVzKHhtaW49MTkzOSwgeG1heD0xOTQ1LCB5bWluPTAsIHltYXg9MTUwKSxhbHBoYT0wLjE1LCBmaWxsID0gImdyYXkiICkgKwpnZW9tX2hpc3RvZ3JhbShkYXRhID0gV1dJSSwgYWVzKFdXSUkkU3RZZWFyLngpKSAKCgpgYGAKCgoKCgojIyBDb2xkIFdhciAKYGBge3IgZmlnLndpZHRoPTE1LCBmaWcuaGVpZ2h0PTIwfQpjb2xkd2FyIDwtIG1pZEFCCmNvbGR3YXIgPC0gY29sZHdhclttaWRBQiRTdFllYXIueCA+PSAxOTQwLF0KY29sZHdhciA8LSBjb2xkd2FyW21pZEFCJFN0WWVhci54IDw9IDE5OTksXQoKYSA8LSBnZ3Bsb3QoKSArIApnZW9tX3JlY3QoZGF0YT1kLCBtYXBwaW5nPWFlcyh4bWluPTE5NDcsIHhtYXg9MTk5MSwgeW1pbj0iQUFCIiwgeW1heD0iWklNIiksYWxwaGE9MC4xNSwgZmlsbCA9ICJzYWxtb24iICkgKwpnZW9tX3BvaW50KGRhdGEgPSBjb2xkd2FyLCBhZXMoeCA9IFN0WWVhci54LCB5ID0gU3RBYmIsIGNvbG9yID0gT3V0Y29tZSkpICsgZmFjZXRfd3JhcCh+U2lkZUEpCgpiIDwtIGdncGxvdCgpICsgCmdlb21fcmVjdChkYXRhPWQsIG1hcHBpbmc9YWVzKHhtaW49MTk0NywgeG1heD0xOTkxLCB5bWluPSJBQUIiLCB5bWF4PSJaSU0iKSxhbHBoYT0wLjE1LCBmaWxsID0gInNhbG1vbiIgKSArCmdlb21fcG9pbnQoZGF0YSA9IGNvbGR3YXIsIGFlcyh4ID0gU3RZZWFyLngsIHkgPSBTdEFiYiwgY29sb3IgPSBPdXRjb21lKSkgKyBmYWNldF93cmFwKH5PcmlnKQoKZ3JpZC5hcnJhbmdlKGEsYiwgbnJvdyA9MikKYGBgCgoKCmBgYHtyfQpnZ3Bsb3QoKSArIApnZW9tX3JlY3QoZGF0YT1kLCBtYXBwaW5nPWFlcyh4bWluPTE5MzksIHhtYXg9MTk0NSwgeW1pbj0wLCB5bWF4PTE1MCksYWxwaGE9MC4xNSwgZmlsbCA9ICJncmF5IiApICsKZ2VvbV9oaXN0b2dyYW0oZGF0YSA9IFdXSUksIGFlcyhXV0lJJFN0WWVhci54KSkgCgpgYGAKCgojI0tvcmVhbiBXYXIgCmBgYHtyIGZpZy53aWR0aD0xMCwgZmlnLmhlaWdodD0xNH0Ka3dhciA8LSBtaWRBQgprd2FyIDwtIG1pZEFCW21pZEFCJFN0WWVhci54ID49IDE5NDcsXQprd2FyIDwtIG1pZEFCW21pZEFCJFN0WWVhci54IDw9IDE5NTUsXQoKdndhciA8LSBtaWRBQgp2d2FyIDwtIG1pZEFCW21pZEFCJFN0WWVhci54ID49IDE5NTAsXQp2d2FyIDwtIG1pZEFCW21pZEFCJFN0WWVhci54IDw9IDE5ODAsXQoKYXdhciA8LSBtaWRBQgphd2FyIDwtIG1pZEFCW21pZEFCJFN0WWVhci54ID49IDE5OTYsXQoKCmEgPC0gZ2dwbG90KCkgKyAKZ2VvbV9yZWN0KGRhdGE9ZCwgbWFwcGluZz1hZXMoeG1pbj0xOTUwLCB4bWF4PTE5NTMsIHltaW49IkFBQiIsIHltYXg9IlpJTSIpLGFscGhhPTAuMTUsIGZpbGwgPSAic2FsbW9uIiApICsKZ2VvbV9wb2ludChkYXRhID0ga3dhciwgYWVzKHggPSBTdFllYXIueCwgeSA9IFN0QWJiLCBjb2xvciA9IE91dGNvbWUpKSArIGZhY2V0X3dyYXAoflNpZGVBKQoKYiA8LSBnZ3Bsb3QoKSArIApnZW9tX3JlY3QoZGF0YT1kLCBtYXBwaW5nPWFlcyh4bWluPTE5NTAsIHhtYXg9MTk1MywgeW1pbj0iQUFCIiwgeW1heD0iWklNIiksYWxwaGE9MC4xNSwgZmlsbCA9ICJzYWxtb24iICkgKwpnZW9tX3BvaW50KGRhdGEgPSBrd2FyLCBhZXMoeCA9IFN0WWVhci54LCB5ID0gU3RBYmIsIGNvbG9yID0gT3V0Y29tZSkpICsgZmFjZXRfd3JhcCh+T3JpZykKCmdyaWQuYXJyYW5nZShhLGIsIG5yb3cgPTIpCmBgYAoKCiMjIFZpZXRuYW0gV2FyCmBgYHtyIGZpZy53aWR0aD0xMCwgZmlnLmhlaWdodD0xNH0KCnZ3YXIgPC0gbWlkQUIKdndhciA8LSBtaWRBQlttaWRBQiRTdFllYXIueCA+PSAxOTUwLF0KdndhciA8LSBtaWRBQlttaWRBQiRTdFllYXIueCA8PSAxOTgwLF0KCgphIDwtIGdncGxvdCgpICsgCmdlb21fcmVjdChkYXRhPWQsIG1hcHBpbmc9YWVzKHhtaW49MTk1NSwgeG1heD0xOTc1LCB5bWluPSJBQUIiLCB5bWF4PSJaSU0iKSxhbHBoYT0wLjE1LCBmaWxsID0gInNhbG1vbiIgKSArCmdlb21fcG9pbnQoZGF0YSA9IHZ3YXIsIGFlcyh4ID0gU3RZZWFyLngsIHkgPSBTdEFiYiwgY29sb3IgPSBPdXRjb21lKSkgKyBmYWNldF93cmFwKH5TaWRlQSkKCmIgPC0gZ2dwbG90KCkgKyAKZ2VvbV9yZWN0KGRhdGE9ZCwgbWFwcGluZz1hZXMoeG1pbj0xOTU1LCB4bWF4PTE5NzUsIHltaW49IkFBQiIsIHltYXg9IlpJTSIpLGFscGhhPTAuMTUsIGZpbGwgPSAic2FsbW9uIiApICsKZ2VvbV9wb2ludChkYXRhID0gdndhciwgYWVzKHggPSBTdFllYXIueCwgeSA9IFN0QWJiLCBjb2xvciA9IE91dGNvbWUpKSArIGZhY2V0X3dyYXAofk9yaWcpCgpncmlkLmFycmFuZ2UoYSxiLCBucm93ID0yKQpgYGAKCgojIEFmZ2hhbmlzdGFuIFdhciAKYGBge3IgZmlnLndpZHRoPTEwLCBmaWcuaGVpZ2h0PTE0fQoKYXdhciA8LSBtaWRBQgphd2FyIDwtIG1pZEFCW21pZEFCJFN0WWVhci54ID49IDE5OTYsXQoKCmEgPC0gZ2dwbG90KCkgKyAKZ2VvbV9yZWN0KGRhdGE9ZCwgbWFwcGluZz1hZXMoeG1pbj0yMDAxLCB4bWF4PTIwMTAsIHltaW49IkFBQiIsIHltYXg9IlpJTSIpLGFscGhhPTAuMTUsIGZpbGwgPSAic2FsbW9uIiApICsKZ2VvbV9wb2ludChkYXRhID0gYXdhciwgYWVzKHggPSBTdFllYXIueCwgeSA9IFN0QWJiLCBjb2xvciA9IE91dGNvbWUpKSArIGZhY2V0X3dyYXAoflNpZGVBKQoKYiA8LSBnZ3Bsb3QoKSArIApnZW9tX3JlY3QoZGF0YT1kLCBtYXBwaW5nPWFlcyh4bWluPTIwMDEsIHhtYXg9MjAxMCwgeW1pbj0iQUFCIiwgeW1heD0iWklNIiksYWxwaGE9MC4xNSwgZmlsbCA9ICJzYWxtb24iICkgKwpnZW9tX3BvaW50KGRhdGEgPSBhd2FyLCBhZXMoeCA9IFN0WWVhci54LCB5ID0gU3RBYmIsIGNvbG9yID0gT3V0Y29tZSkpICsgZmFjZXRfd3JhcCh+T3JpZykKCmdyaWQuYXJyYW5nZShhLGIsIG5yb3cgPTIpCmBgYAoKCgo=